package Week1;

import java.util.*;

public class Day5 {
}


//牛客:游游的you
// 注意类名必须为 Main, 不要有任何 package xxx 信息
class Main11 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int q = in.nextInt();
        while(q != 0){
            int y = in.nextInt();
            int o = in.nextInt();
            int u = in.nextInt();
            //得到y,o,u个数的最小值，此时的值就是能组成you的个数，而o的个数减去此时的值所组成的就是o的分数，
            int count = Math.min(y,Math.min(o,u));
            //加在一起就是一共的值
            System.out.println(count * 2 + Math.max(o - count - 1,0));
            q--;
        }
    }
}

//牛客:NC398 腐烂的苹果
class Solution3 {
    /**
     * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
     *
     *
     * @param grid int整型ArrayList<ArrayList<>>
     * @return int整型
     */
    int[] dx = {0, 0, 1, -1};
    int[] dy = {1, -1, 0, 0};
    public int rotApple (ArrayList<ArrayList<Integer>> grid) {
        // write code here
        int m = grid.size();
        int n = grid.get(0).size();
        boolean[][] visits = new boolean[m][n];
        Queue<int[]> q = new LinkedList<>();
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                //如果是腐烂的苹果就放入队列中
                if (grid.get(i).get(j) == 2) {
                    //设置为走过
                    visits[i][j] = true;
                    q.offer(new int[] {i, j});
                }
            }
        }

        int ret = 0;
        //遍历队列
        while (!q.isEmpty()) {
            int sz = q.size();
            while (sz-- != 0) {
                //弹出队头
                int[] t = q.poll();
                //记录它的位置
                int a = t[0], b = t[1];
                //进行扩散
                for (int k = 0; k < 4; k++) {
                    int x = dx[k] + a, y = dy[k] + b;
                    //如果没有越界同时还没有被走过，并且是一个好的苹果，就将他放入队列中
                    if (x >= 0 && x < m && y >= 0 && y < n && grid.get(x).get(y) == 1 &&!visits[x][y]) {
                        visits[x][y] = true;
                        q.offer(new int[]{x,y});
                    }
                }
            }
            ret++;
        }

        //最后遍历全部位置，看是否还有没有被腐烂的苹果
        for(int i = 0; i < m; i++){
            for(int j = 0; j < n; j++){
                if(grid.get(i).get(j) == 1 && !visits[i][j]){
                    return -1;
                }
            }
        }
        return ret-1;
    }
}

//牛客:JZ62:孩子们的游戏
class Solution4 {
    /**
     * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
     *
     *
     * @param n int整型
     * @param m int整型
     * @return int整型
     */
    public int LastRemaining_Solution (int n, int m) {
        // write code here
        //创建一个队列
        Queue<Integer> q = new LinkedList<>();
        //将所有孩子放入队列中
        for(int i = 0; i < n; i++){
            q.offer(i);
        }

        int count = 0;
        //如果孩子的数量不为1，就继续循环
        while(n != 1){
            //如果是报的是第m-1的数，就将这个孩子出队，并减少孩子总数重置count
            if(count == m - 1){
                q.poll();
                n--;
                count = 0;
            }else{
                //如果不是第m-1个数据就将孩子出队后入队，就确定下一个孩子的报数
                q.offer(q.poll());
                count++;
            }
        }
        return q.poll();
    }
}